Nginx & SSL & Godaddy


Posted by MingLin1995 on 2024-05-01

透過 Nginx 反向代理為 HTTPS 並設定網域名稱

  1. 到 Godaddy 購買網域名稱:
    • 類型 A ;資料設定自己 IP
    • 類型 CNAME ;名稱設定自己要的網域前綴名稱 ; 資料設定購買的網域名稱
  2. 安裝 Nginx:
    sudo apt update
    sudo apt install nginx

  3. 安裝 Certbot:
    Certbot,用來簽發和更新Let's Encrypt SSL證書:
    sudo apt install certbot python3-certbot-nginx

  4. 獲取 Let's Encrypt SSL 證書(使用Certbot取得SSL證書):
    sudo certbot --nginx -d CNAME.網域名稱
    或申請通用證書
    sudo certbot --nginx -d www.minglin.vip -d taipei-day-trip.minglin.vip -d message-board.minglin.vip -d crypto-sniper.minglin.vip

  5. 自動更新SSL證書:

    • 打開root用戶的crontab配置文件以進行編輯
      sudo crontab -e 選1 nano 編輯器
    • 在crontab文件的內容中,添加以下行來設定Certbot的自動更新工作
      0 0 * * * /usr/bin/certbot renew --quiet
    • 檢查cron工作的設置,確保Certbot已經設定為自動更新證書
      sudo crontab -l
    • 手動測試證書更新
      sudo certbot renew
  6. 檢查是否配置正確:
    sudo nginx -t

  7. 設定Nginx虛擬主機:
    編輯Nginx配置文件:
    sudo nano /etc/nginx/sites-available/minglin.vip.conf

server {
    if ($host = CNAME.網域名稱) { 
        return 301 https://$host$request_uri;  // 如果是 CNAME.網域 名稱方式進入,導向 HTTPS
    } 
    listen 80;
    server_name CNAME.網域名稱;
    location / {
        return 301 https://$host$request_uri; // HTTP 流量進入時 先檢查是否為 CNAME.網域 名稱方式進
    }
}
server {
    server_name CNAME.網域名稱;
    location /{
        proxy_pass http://IP:PORT; // 反向代理到指定的 IP:PORT
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    listen 443 ssl; // SSL 配置
    ssl_certificate /etc/letsencrypt/live/CNAME.網域名稱/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/CNAME.網域名稱/privkey.pem; 
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}
舉例:
server {
    if ($host = www.minglin.vip) {
        return 301 https://$host$request_uri;
    } 
    listen 80;
    server_name www.minglin.vip;
    location / {
        return 301 https://$host$request_uri;
    }
}
server {
    server_name www.minglin.vip;
    location /{
        proxy_pass http://127.0.0.1:5555;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/www.minglin.vip/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/www.minglin.vip/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf; 
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 
}
  1. 啟用 Nginx 虛擬主機:
    創建符號鏈接到 sites-enabled 目錄以啟用虛擬主機:
    sudo ln -s /etc/nginx/sites-available/minglin.vip.conf /etc/nginx/sites-enabled/

  2. 檢查 Nginx 配置文件是否無誤:
    sudo nginx -t

  3. 如果沒有錯誤,重新加載 Nginx 以應用配置更改:
    sudo systemctl reload nginx

  4. 測試看看是否有反向代理成功:
    https://CNAME.網域名稱/

若有遇到問題 (可以用無痕測試)

  • 檢查是否有錯誤
    sudo cat /var/log/nginx/error.log

#nginx #SSL #godaddy #Let's Encrypt #Certbot #DNS







Related Posts

[進階 js 06] 體驗 JS 引擎的一天,理解 Execution Context 與 Variable Object

[進階 js 06] 體驗 JS 引擎的一天,理解 Execution Context 與 Variable Object

前言

前言

[ week 6 ] CSS 筆記+作業

[ week 6 ] CSS 筆記+作業


Comments